{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "intro-loops",
   "metadata": {},
   "source": [
    "# Βρόγοι Επανάληψης"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "concept-loops",
   "metadata": {},
   "source": [
    "## Βήμα 1: Τι είναι οι # Βρόχοι Επανάληψης;\n",
    "Οι βρόχοι είναι μια βασική έννοια στον προγραμματισμό που σας επιτρέπουν να επαναλάβετε ένα μπλοκ κώδικα πολλές φορές. Αυτή η επανάληψη είναι απίστευτα χρήσιμη όταν θέλετε να επεξεργαστείτε μια συλλογή στοιχείων ή να εκτελέσετε μια λειτουργία μέχρι να εκπληρωθεί μια συνθήκη.\n",
    "\n",
    "Στην Python, υπάρχουν δύο κύριοι τύποι βρόχων:\n",
    "\n",
    "- **`for` loop**: Χρησιμοποιείται όταν θέλετε να κάνετε επανάληψη σε μια ακολουθία (όπως μια λίστα, πλειάδα ή συμβολοσειρά) ή να εκτελέσετε μια ενέργεια συγκεκριμένες φορές.\n",
    "- **`while` loop**: Χρησιμοποιείται όταν θέλετε ο βρόχος να συνεχίσει να εκτελείται όσο μια συγκεκριμένη συνθήκη παραμένει \"True\"."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "types-loops",
   "metadata": {},
   "source": [
    "### Οι δύο κύριοι τύποι βρόχων στην Python\n",
    "- **`for` loop**: Αυτός ο βρόχος λειτουργεί επαναλαμβάνοντας μια ακολουθία (όπως λίστα ή συμβολοσειρά) και εκτελώντας το μπλοκ κώδικα για κάθε στοιχείο.\n",
    "- **`while` loop**: Αυτός ο βρόχος εκτελείται όσο μια δεδομένη συνθήκη είναι \"True\". Χρησιμοποιείται συνήθως όταν δεν ξέρετε πόσες φορές πρέπει να τρέξει ο βρόχος εκ των προτέρων και εξαρτάται από κάποια συνθήκη."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "for-loop",
   "metadata": {},
   "source": [
    "## Βήμα 2: Ο Βρόχος `for` ('for' Loop)\n",
    "Ένας βρόχος 'for' χρησιμοποιείται γενικά όταν γνωρίζετε τον αριθμό των επαναλήψεων ή πρέπει να κάνετε επανάληψη (loop) σε μια ακολουθία στοιχείων όπως μια λίστα, πλειάδα ή συμβολοσειρά.\n",
    "Παρακάτω ένα παράδειγμα βρόχου \"for\" που επαναλαμβάνεται πάνω από μια λίστα αριθμών:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "code-for-loop",
   "metadata": {},
   "outputs": [],
   "source": [
    "numbers = [1, 2, 3, 4, 5]\n",
    "# Ο βρόχος for θα περάσει από κάθε στοιχείο στη λίστα numbers\n",
    "for num in numbers:\n",
    "    print(num)  # Έξοδος: 1 2 3 4 5"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "while-loop",
   "metadata": {},
   "source": [
    "## Βήμα 3: Ο Βρόχος `while` ('While' Loop)\n",
    "Ένας βρόχος «while» συνεχίζει να εκτελείται όσο μια καθορισμένη συνθήκη είναι «True». Αυτός ο τύπος βρόχου είναι χρήσιμος όταν ο αριθμός των επαναλήψεων δεν είναι γνωστός εκ των προτέρων και εξαρτάται από κάποια συνθήκη.\n",
    "Παράδειγμα βρόχου \"while\" που μετράει από το 0 έως το 4:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "code-while-loop",
   "metadata": {},
   "outputs": [],
   "source": [
    "count = 0\n",
    "# Ο βρόχος εκτελείται εφόσον το count είναι μικρότερο από 5\n",
    "while count < 5:\n",
    "    print(count)  # Έξοδος: 0 1 2 3 4\n",
    "    count += 1  # Αύξηση του count κατά 1 μετά από κάθε επανάληψη"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "break-continue",
   "metadata": {},
   "source": [
    "## Βήμα 4: Χρήση της `break` και `continue`\n",
    "Μπορείτε να ελέγξετε τη ροή ενός βρόχου με τις εντολές 'break' και 'continue':\n",
    "- `break`: Έξοδος αμέσως από τον βρόχο.\n",
    "- `continue`: Παραλείπει την τρέχουσα επανάληψη και μετακινείται στην επόμενη επανάληψη του βρόχου."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "code-break-continue",
   "metadata": {},
   "outputs": [],
   "source": [
    "for num in range(10):\n",
    "    if num == 5:\n",
    "        break  # Έξοδος από τον βρόχο (loop) όταν το num γίνει ίσο με 5\n",
    "    if num == 3:\n",
    "        continue  # Αγνοεί το num = 3\n",
    "    print(num)  # Έξοδος: 0 1 2 4"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "nested-loops",
   "metadata": {},
   "source": [
    "## Βήμα 5: Εμφωλευμένοι βρόχοι\n",
    "Ένας εμφωλευμένος βρόχος είναι ένας βρόχος μέσα σε έναν άλλο βρόχο. Αυτό είναι χρήσιμο όταν χρειάζεται να εκτελέσετε μια εργασία που περιλαμβάνει πολλές ακολουθίες, όπως η επανάληψη σε μια λίστα λιστών.\n",
    "Παράδειγμα εμφωλευμένων βρόχων που επαναλαμβάνονται σε ένα ζεύγος ακολουθιών:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "code-nested-loops",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in range(3):\n",
    "    for j in range(2):\n",
    "        print(f'({i}, {j})')  # Έξοδος: (0,0) (0,1) (1,0) (1,1) (2,0) (2,1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "exercise-loops",
   "metadata": {},
   "source": [
    "## Βήμα 6: Ασκήσεις\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "455e845c",
   "metadata": {},
   "source": [
    "### Άσκηση 1: Εκτύπωση αριθμών 1 έως 10\n",
    "Γράψτε ένα πρόγραμμα που εκτυπώνει τους αριθμούς από το 1 έως το 10 χρησιμοποιώντας έναν βρόχο for. Η έξοδος θα πρέπει να είναι: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5976fe7",
   "metadata": {},
   "source": [
    "### Άσκηση 2: Αντίστροφη μέτρηση\n",
    "Γράψτε ένα πρόγραμμα που χρησιμοποιεί έναν βρόχο «while» για να εκτυπώσει μια αντίστροφη μέτρηση από το 10 στο 1."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python",
   "version": "3.x"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
